//package com.example.learngradlew10kt
//
//import android.app.Activity
//import androidx.appcompat.app.AppCompatActivity
//import android.os.Bundle
//import android.util.Log
//
///*
// * 阿里热修复Sophix原理-笔记v0.8
// * https://www.jianshu.com/p/ed03e8e4b08f
// *
// * Android 增量更新bsdiff和bspatch
// * https://www.jianshu.com/p/f0f2950dee74
// *
// * Android使用bsdiff做差分包增量更新
// * https://blog.csdn.net/wb_001/article/details/102766706
// *
// * 【Android增量更新】bsdiff增量更新测试记录
// * https://www.cnblogs.com/lovewaits/p/15140748.html
// *
// * Android差分包生成和合成新包-bsdiff
// * https://www.jianshu.com/p/1d69b3ade53a
// *
// *
// * bsdiff在mac上的安装和使用
// * https://blog.csdn.net/u012346890/article/details/109197950
// */
//class MainActivity : AppCompatActivity() {
//    override fun onCreate(savedInstanceState: Bundle?) {
//        super.onCreate(savedInstanceState)
//
//        //app build 目录 javac -> tansform -> dex -> outputs -> apk文件
//
//        setContentView(R.layout.activity_main)
//        Log.i("==","onCreate : ${this.classLoader}")//PathClassLoader：加载应用当中的这些类，
//        Log.i("==","onCreate : ${this.classLoader.parent}")//BootClassLoader
//        Log.i("==","onCreate : ${Activity::class.java.classLoader}")//BootClassLoader 用来加载android sdk 的 这些类
//        /*
// 2022-04-06 08:30:12.932 26267-26267/com.example.learngradlew10kt I/==: onCreate : dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.learngradlew10kt-uvqoTWqgg6mwlKQpVHb-jg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.learngradlew10kt-uvqoTWqgg6mwlKQpVHb-jg==/lib/arm64, /system/lib64, /system/product/lib64]]]
//2022-04-06 08:30:12.932 26267-26267/com.example.learngradlew10kt I/==: onCreate : java.lang.BootClassLoader@6611ccf
//2022-04-06 08:30:12.932 26267-26267/com.example.learngradlew10kt I/==: onCreate : java.lang.BootClassLoader@6611ccf
//
//         */
//
//        /*
//            为什么要用两个classload ?
//
//            如果没有，那么就没有 双亲委派机制
//
//            双亲委派机制作用：
//            可以防止重复加载
//            防止替换核心库中的类
//
//         */
//
//        //Activity.class , BootClassLoader 先检测是否加过
//
////        this.classLoader.loadClass("")//看loadClass里面的源码，如果Class被加载过了就不会再加载，而是从缓存里取；
//    }
//
//    private fun log(str: String){
//
//    }
//
//    fun test(){
//
//    }
//}